﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TicketsPhone.Web.Models;
using TicketsPhone.Domain.Concrete;

namespace TicketsPhone.Web.Controllers
{
    public class ReportesController : Controller
    {
        //
        // GET: /Reportes/

        ReporteRepositorio _reportes = new ReporteRepositorio();

        public ActionResult Listar()
        {
            return RedirectToAction("ListarEntidades");
        }

        public ActionResult ListarEntidades()
        {
            ReporteEntidadModel model = new ReporteEntidadModel();
            model.Entidades = _reportes.ObtenerEntidades(CargarFecha("Inicio"), CargarFecha("Fin").AddHours(23));
            model.TotalTurnos = _reportes.TotalRegistros;
            return View(model);
        }

        public ActionResult ListarSucursales(int id)
        {
            ReporteSucursalModel model = new ReporteSucursalModel();
            model.Sucursales = _reportes.ObtenerSucursales(id, CargarFecha("Inicio"), CargarFecha("Fin"));
            model.TotalTurnos = _reportes.TotalRegistros;
            return View(model);
        }

        public ActionResult ListarEstados(int id)
        {
            ReporteEstadoModel model = new ReporteEstadoModel();
            model.Estados = _reportes.ObtenerEstados(id, CargarFecha("Inicio"), CargarFecha("Fin"));
            model.TotalTurnos = _reportes.TotalRegistros;
            return View(model);
        }


        public ActionResult ListarHorarios(int id)
        {
            ReporteHorarioModel model = new ReporteHorarioModel();
            model.Horarios = _reportes.ObtenerHorarios(id, CargarFecha("Inicio"), CargarFecha("Fin"));
            model.TotalTurnos = _reportes.TotalRegistros;
            return View(model);
        }

        

        

        /// <summary>
        /// Carga un objeto DateTime de acuerdo al querystring enviado
        /// </summary>
        /// <param name="nombreControl"></param>
        /// <returns></returns>
        private DateTime CargarFecha(string nombreControl)
        {
            if (Request[string.Format("ddlAnio_{0}", nombreControl)] != null && Request[string.Format("ddlMes_{0}", nombreControl)] != null && Request[string.Format("ddlDia_{0}", nombreControl)] != null)
            {
                return new DateTime(Convert.ToInt32(Request[string.Format("ddlAnio_{0}", nombreControl)]),Convert.ToInt32(Request[string.Format("ddlMes_{0}", nombreControl)]), Convert.ToInt32(Request[string.Format("ddlDia_{0}", nombreControl)]), 0, 0, 0);
            }
            else
            {
                if (nombreControl.Equals("Inicio"))
                    return DateTime.Now.AddYears(-5);
                else
                    return DateTime.Now.AddYears(1);
            }
        }
        
        

    }
}
